Tillst�nd har utf�rdats f�r att g�ra och distribuera exakta kopior av den h�r manual och av programmet FlexCat.
F�rfattaren utf�rdar inga som helst garantier f�r att programmet som beskrivs i denna dokumentation, samt resultatet fr�n programmet, �r korrekta. F�rfattaren kan inte h�llas ansvarig f�r n�gra skador som h�rr�r fr�n anv�ndadet av denna mjukvara.
\input texinfo
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I och med OS 2.1 erbjuder Amigan ett trevligt system f�r att anv�nda
program p� olika spr�k: locale.library
. (Detta kallas att lokalisera
programmet; det �r vad namnet st�r f�r.)
Id�n �r enkel: Du v�ljer ett spr�k - engelska f�r det mesta - och skriver
ditt program p� samma s�tt som du gjorde utan lokalisering, f�rutom att
konstanta str�ngar ers�tts av vissa speciella funktionsanrop. Ett annat
funktionsanrop g�r det m�jligt f�r anv�ndaren att v�lja ett annat spr�k n�r
programmet k�rs. (Det senare funktionsanropet l�ser in en extern fil, den
s� kallade katalogen
, och g�r att den ovan n�mnda funktionen l�ser
str�ngarna fr�n katalogen ist�llet f�r att anv�nda de f�rdefinierade
str�ngarna.)
Dessa kataloger �r oberoende av programmet. Allt du beh�ver f�r att l�gga till ett annat spr�k �r att skapa en ny katalogfil, och detta kan g�ras n�r som helst, utan att programmet �ndras.
Men det �r n�gra saker till som programmeraren beh�ver g�ra: Han beh�ver skapa katalogen, de f�rdefinierade str�ngarna, och lite k�llkod f�r att anv�nda str�ngarna (de funktioner som n�mns ovan). FlexCat har konstruerats f�r att g�ra detta p� ett enkelt och n�st intill automatiskt s�tt, utan att f�r den skull f�rlora flexibilitet n�r det g�ller skapandet av k�llkoden. Ett exempel f�r att f�rtydliga:
Antag att vi vill skriva ‘HelloLocalWorld.c’. V�rt slutliga program kommer att se ut s� h�r:
#include <stdio.h> #include <stdlib.h> /* Du m�ste inkludera den h�r filen! */ #include <HelloLocalWorld_Cat.h> void main(int argc, char *argv[]) { printf("%s\n", msgHello); }
Observera att detta �r mycket likt den ursprungliga ‘HelloWorld.c’,
f�rutom att vi har ersatt str�ngen "Hello, world!" med konstanten
msgHello
.
Dessa konstanter och de relaterade str�ngarna definieras i en s� kallad
katalogbeskrivning
(see section katalogbeskrivning). Du
b�rjar alltid med att skapa en s�dan fil, kallad ‘HelloLocalWord.cd’,
som kan se ut s� h�r:
; Kommentarer kan naturligtvis anv�ndas! Varje rad som ; b�rjar med ett semikolon antas vara en kommentar. ; ; Spr�ket f�r de inbyggda str�ngarna: #language english ; ; Katalogens version. Den anv�nd vid anropet av ; Locale/OpenCatalog(). Detta skiljer sig fr�n ; Exec/OpenLibrary(): 0 betyer vilken katalog som helst, ; medans andra nummer m�ste st�mma exakt! #version 0 ; ; Detta definierar en str�ng och det ID som anv�nds f�r att ; ange den. Talet 4 h�r s�ger att str�ngen inte f�r vara ; kortare �n 4 tecken. msgHello (/4/) Hello, world!
Genom att anv�nda FlexCat skapar du tv� filer utifr�n katalogbeskrivningen:
Inkluderingsfilen ‘HelloLocaleWorld_Cat.h’, som definierar
konstanterna, samt filen ‘HelloLocalWorld_Cat.c’, som inneh�ller en
vektor med str�ngar samt n�gra initieringsfunktioner. Du beh�ver inte veta
vad funktionerna g�r; anv�nd dem bara. Du beh�ver framf�r allt inte veta
n�got om locale.library
!
Du kanske �r intresserad av hur dessa filer ser ut, eller du kanske till
och med vill modifiera dem. Det �r h�r skillanden mellan FlexCat och andra
kataloggeneratorer m�rks: Med FlexCat �r du inte bunden till vissa inbyggda
format p� dessa filer. Ist�llet anv�nder FlexCat externa mallfiler, s�
kallade k�llkodsbeskrivningar
. Detta g�r det m�jligt att till exmpel
anv�nda kataloger med AmigaOS 2.0 (see section k�llkodsbeskrivning). Om
du anv�nder k�llkodsbeskrivningar fr�n FlexCat-distributionen kan du skapa
k�llkodsfiler med f�ljande kommandon:
‘FlexCat HelloLocalWorld.cd HelloLocalWorld_Cat.c=C_c.sd’ ‘FlexCat HelloLocalWorld.cd HelloLocalWorld_Cat.h=C_h.sd’
N�r ditt program �r klart, kan du anv�nda FlexCat f�r att skapa s� kallade
katalog�vers�ttningar
; en �vers�ttning f�r varje spr�k du vill
st�dja (f�rutom det inbyggda spr�ket). See section katalog�vers�ttning. L�t oss skapa en tysk katalog�vers�ttning f�r v�rt
exempelprogram:
‘FlexCat HelloLocalWorld.cd NEWCTFILE Deutsch.ct’
Den h�r filen skulle nu se ut s� h�r:
## version ## language ## codeset 0 ; Kommentarer kan naturligtvis anv�ndas! Varje rad som ; b�rjar med ett semikolon antas vara en kommentar. ; ; Spr�ket f�r de inbyggda str�ngarna: ; ; Katalogens version. Den anv�nd vid anropet av ; Locale/OpenCatalog(). Detta skiljer sig fr�n ; Exec/OpenLibrary(): 0 betyer vilken katalog som helst, ; medans andra nummer m�ste st�mma exakt! ; ; Detta definierar en str�ng och det ID som anv�nds f�r att ; ange den. Talet 4 h�r s�ger att str�ngen inte f�r vara ; kortare �n 4 tecken. msgHello ;Hello, world!
Som du ser �r de mycket lika katalogbeskrivningar. FlexCat inkluderar kommentarerna i fr�n katalogbeskrivningen, �ven d�r de �r meningsl�sa: Observera kommentaren om str�ngl�ngden, som inte borde synas h�r, eftersom den informationen bara finns i katalogbeskrivningen.
Allt du beh�ver g�ra nu �r att fylla i informationen f�r versionen (i stil med ‘$VER: HelloLocalWorld.catalog 1.1 (25.8.97)’), spr�ket p� katalog�vers�ttningen (‘Deutsch’ f�r tyska i det h�r fallet), kodupps�ttningen (som alltid b�r vara 0 f�r tillf�llet; se Locale/OpenCatalog() f�r mer information) och naturligtvis str�ngen. FlexCat inkluderar den ursprungliga str�ngen som en kommentar, s� att du alltid vet som skall fyllas i. Slutligen skapar du katalogen med ett kommando som:
‘FlexCat HelloLocalWorld.cd Deutsch.ct CATALOG Deutsch.catalog’
Observera att du inte beh�ver sj�lva programmet, eller k�llkodsfilerna som skapades med FlexCat, n�r du skapar katalogerna! Du kan skapa nya kataloger n�r som helst. Det �r vanligt att i distributioner skicka med en fil som FlexCat.ct, s� att anv�ndare kan g�ra sina egna �vers�ttningar.
Men vad h�nder om du �ndrar programmet senare? Redigera bara katalogbeskrivningen och anv�nd FlexCat f�r att uppdatera katalog�vers�ttningarna:
‘FlexCat HelloLocalWorld.cd Deutsch.ct NEWCTFILE Deutsch.ct’
Allt du beh�ver g�ra nu �r att �vers�tta eventuella nya str�ngar.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FlexCat �r skrivet i ren ANSI-C (f�rutom lokaliseringen), s� det b�r
fungera p� vilken Amiga som helst, och f�rhoppningsvis �ven p� andra
datorer efter en omkompilering (lokaliseringen kommenteras bort i det
fallet). Detta g�ller ocks� f�r de skapade programmen: FlexCat skrevs med
sig sj�lv. All distribuerad k�llkodsbeskrivning b�r skapa program som kan
k�ras p� vilken Amiga som helst, och �ven vilken dator som helst
(naturligtvis m�ste du se till att variabeln LocaleBase har v�rdet NULL i
det senare fallet). Lokalisering �r dock bara m�jligt med Workbench 2.1 och
h�gre, eftersom locale.library
inte finns tillg�ngligt i tidigare
versioner av operativsystemet.
Det �r inte om�jligt att lokalisera ett program utan locale.library
:
K�llkodsbeskrivningarna ‘C_c_V20.sd’ och ‘C_h_V20.sd’ anv�nder
iffparse.library
(plus lite egen kod) ist�llet f�r
locale.library
, om locale.library
inte �r tillg�ngligt. Detta
g�r det m�jligt att lokalisera program som k�r under Workbench 2.0.
See section C.
Att installera FlexCat �r enkelt: Kopiera bara programmet till en l�da i din kommandos�kv�g, och v�lj ett st�lle f�r de k�llkodsbeskrivningar du beh�ver (filer som heter n�got i stil med ‘xx_yy.sd’, d�r ‘xx’ �r programspr�ket). Du vill f�rmodligen s�tta milj�variabln FLEXCAT.PREFS eller FLEXCAT_SDDIR. See section programstart.
Om du vill anv�nda FlexCat i ett annat spr�k �n engelska beh�ver du kopiera motsvarande katalogfil. T.ex., f�r tyska, kopiera filen ‘Catalogs/Deutsch/FlexCat.catalog’ till ‘Locale:Catalogs/Deutsch/’ eller till ‘ProgDir:Catalogs/Deutsch/’, d�r ‘ProgDir:’ �r den l�da d�r FlexCat finns. See section att anv�nda FlexCat-k�llkod.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FlexCat �r ett skalbaserat program, och kan inte anv�ndas fr�n Workbench. Syntaxen �r:
FlexCat CDFILE/A,CTFILE,CATALOG/K,NEWCTFILE/K,SOURCES/M, WARNCTGAPS/S,NOOPTIM/S,FILL/S,FLUSH/S,NOBEEP/S, NOLANGTOLOWER/S,NOBUFFEREDIO/S,MODIFIED/S,QUIET/S
Notera att FlexCat inte anv�nder de normala rutinerna f�r att tolka argumenten (f�r portabilitetens skull). Detta g�r framf�r allt att de enda nyckelod du kan (och m�ste) ange �r CATALOG och NEWCTFILE (de som �r av typen "/K"), de andra kan inte anges, d� de skulle tolkas som argument i sig. Detta kommer att �ndras, f�rmodligen i n�sta version.
I och med version 1.9 har FlexCat ett enkelt system f�r inst�llningar, som l�ter dig �ndra FlexCats normala beteende. See section inst�llningar.
Vad argumenten anv�nds till:
�r namnet p� den katalogbeskrivning som skall l�sas. Denna m�ste alltid anges. Observera att basnamnet f�r k�llkodsbeskrivningen skapas fr�n detta argument, vilket g�r det l�gesk�nsligt. See section k�llkodsbeskrivning.
�r namnet p� den katalog�vers�ttning som skall l�sas. Denna beh�vs n�r du skapar en katalog, eller n�r du uppdaterar en gammal katalog�vers�ttning via NEWCTFILE-argumentet: FlexCat l�ser den gamla �vers�ttningen samt katalogbeskrivningen och skapar en ny katalog�vers�ttning inneh�llande de gamla str�ngarna, och kanske n�gra tomma rader f�r de nya str�ngarna.
�r namnet p� den katalogfil som skall skapas. Detta argument kr�ver att CTFILE ocks� anges.
�r namnet p� den katalog�vers�ttning som skall skapas. FlexCat l�ser str�ngarna fr�n CTFILE, om CTFILE angavs; str�ngar som saknas i katalog�vers�ttningen ers�tts med tomma rader. (Den nya katalog�vers�ttningen kommer bara att inneh�lla tomma rader som str�ngar om CTFILE inte anges.)
�r namnet p� de k�llkoder som skall skapas. Dessa anges i formatet ‘k�llkod=mall’, d�r ‘k�llkod’ �r filen som ska skapas, och ‘mall’ �r namnet p� den k�llkodsbeskrivning som ska l�sas.
Om k�llkodsbeskrivningen inte kunde hittas, f�rs�ker FlexCat �ppna en fil med samma namn i l�dan ‘ProgDir:lib’. (L�dan ‘lib’ i den l�da som FlexCat finns i.) Du kan �ndra denna f�rvalda l�da genom att s�tta milj�variabeln FLECCAT_SDDIR. Exempel:
‘FlexCat FlexCat.cd FlexCat_Cat.c=Templates/C_c_V20.sd’
letar efter filen ‘Templates/C_c_V20.sd’ i den aktuella l�dan. Om denna fil inte kunde hittas, och milj�variablen FLEXCAT_SDDIR inte var definierad, letar FlexCat efter ‘ProgDir:lib/Templates/C_c_V20.sd’. Om FLEXCAT_SDDIR var definierad och inneh�ll till exempel ‘Work:FlexCat’, letar FlexCat efter ‘Work:FlexCat/Templates/C_c_V20.sd’.
Normalt sett varnar FlexCat inte om symboler saknas i katalog�vers�ttningen. Med denna flagga kan du f� FlexCat att visa s�dana varningar.
Om b�da str�ngarna (orginalet i #?.cd, och �vers�ttningen i #?.ct) �r likadana, s� antar FlexCat normalt sett att str�ngen inte beh�ver skrivas till katalogen, eftersom str�ngen d� kan tas fr�n de inbyggda str�ngarna ist�llet. Men om du av n�gon anledning vill att �ven dessa str�ngar skall skrivas (eller: om du vill att alla str�ngar skall skrivas), anv�nd NOOPTIM.
Denna finess �r mycket anv�ndbar f�r �vers�ttarna. N�r du arbetar p� en �vers�ttning kan en del str�ngar vara tomma, men du vill prova de �vers�ttningar du redan har gjort. Olyckligtvis s� skriver d� alla kataloggeneratorer tomma str�ngar, vilket skulle g�ra att t.ex. knappar blir tomma.
En flagga f�r att f�rbjuda tomma str�ngar �r inte en bra l�sning, eftersom du d� inte kan ha s�dana om det beh�vs. Dessutom, ett illa skrivet program kanske kr�ver att alla str�ngar finns i katalogen (�ven de tomma), t.ex. f�r att det inte finns n�gra inbyggda str�ngar. Genom att anv�nda FILL-flaggan kan du tvinga FlexCat att skriva orginalstr�ngarna (fr�n ‘#?.cd’-filen) varje g�ng den hittar en tom �vers�ttning, eller en �vers�ttning som inte finns.
OBS: Detta b�r bara anv�ndas f�r att prova �vers�ttningen. F�rdiga kataloger b�r alltid skapas utan n�gon FILL-flagga!
Denna flagga �r anv�ndbar n�r du �vers�tter och provar din �vers�ttning. Eftersom AmigaOS inte direkt tar bort kataloger (och bibliotek, teckensnitt, drivrutiner, etc.) fr�n minnet n�r de inte l�ngre anv�nds, kan du beh�va tvinga systemet att ta bort dem (t.ex. genom att anv�nda ‘C:Avail FLUSH’) varje g�ng du vill att den nyskapade katalogen skall l�sas fr�n disk (ist�llet f�r att kopian i minnet anv�nds). Om du anger den h�r flaggan n�r katalogen skapas, kommer FlexCat att ta bort alla oanv�nda saker fr�n minnet.
OBS: FLUSH fungerar bara n�r du skapar en katalog. Annars kommer den att ignoreras.
Example:
‘FlexCat Test.cd Test.ct CATALOG Test.catalog FLUSH’
I och med version 1.9 bl�nker FlexCat sk�rmen f�r att uppm�rksamma dig om problem som har p�tr�ffats. Detta kan vara mycket anv�ndbart n�r du anv�nver FlexCat fr�n en milj� utan en normal utmatning (t.ex. om du startar ett skript fr�n Opus eller ett annat program). Du kanske inte tycker om dessa bl�nkningar (fast FlexCat �r smart nog att bara bl�nka en g�ng, �ven om du f�r 20 varingar). I s� fall kan du anv�nda NOBEEP-flaggan f�r att st�nga av bl�nkandet.
Normalt konverterar FlexCat argumentet till #language till gemener genom att anv�nda en funktion i utility.library. Denna funktion anv�nder locale.library om det �r installerat, men tydligen finns det felaktiga �vers�ttningstabeller f�r n�gra spr�k (till exempel tjeckiska), vilket kan leda till en felaktig konvertering. Med den h�r flaggan kan du undvika problemet. Du b�r dock kontakta f�rfattaren av spr�kfilerna s� att dessa fel r�ttas, eftersom andra program kan drabbas av samma problem. Kom ih�g att bara anv�nda gemener f�r #language om du anv�nder den h�r flaggan (och anv�nd den bara om det �r absolut n�dv�ndigt).
FlexCat anv�nder buffrad IO. Detta kan g�ra FlexCat snabbare, men det �r inte s�kert. Du kan d� anv�nda den h�r flaggan f�r att anv�nda obuffrad IO. Anv�nd den bara om det �r n�dv�ndigt.
Den h�r flaggan g�r att FlexCat bara skapar katalogen n�r n�gon av k�llfilerna, #?.cd och #?.ct, har �ndrats sedan katalogen senast kompilerades. N�r katalogen �r nyare �n k�llfilerna avslutar FlexCat utan att g�ra n�got. Den h�r flaggan �r anv�ndbar n�r du vill skapa en kommandofil f�r att kompilera flera kataloger p� en g�ng (till exempel f�r �vers�ttningen av stora program), och inte vill sl�sa tid p� att kompilera om kataloger som inte har �ndrats. (Detta �r allts� ett enklare alternativ till att anv�nda ett make-program.)
S�ger �t FlexCat att h�lla tyst om det inte �r absolut n�dv�ndigt. Det betyder att du inte kommer att se n�gra varningar. Fel kommer att rapporteras som vanligt.
F�r fler exempel p� kommandorader, se �versikten.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I och med version 1.9 har FlexCat ett enkelt system f�r inst�llningar. Genom att anv�nda milj�variabeln FLEXCAT.PREFS kan du �ndra programmets normala beteende.
Variabeln FLEXCAT.PREFS tolkas med dos.library:s ReadArgs()-funktion, och s�lunda skall alla argument anges p� en rad, d�r argumenten separeras med mellanslag. Mallen f�r inst�llningarna ser ut som f�ljer:
SDDIR/K,WARNCTGAPS/S,NOOPTIM/S,FILL/S,FLUSH/S,NOBEEP/S,QUIET/S
F�r mer information om dessa argument, See section programstart.
En kommentar ang�ende SDDIR: N�r k�llkoden skapas letar FlexCat f�rst i den aktuella l�dan, sedan i l�dorna som anges i inst�llningarna. Om detta fortfarande inte lyckas, l�ses FLEXCAT_SDDIR, och slutligen l�dan ‘ProgDir:lib/’. Genom att anv�nda b�de inst�llningsvariabeln och FLEXCAT_SDDIR kan du allts� anv�nda tv� egna l�dor f�r k�llkodsbeskrivningar samtidigt.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
En katalogbeskrivning inneh�ller fyra olika sorters rader.
En rad om b�rjar med ett semikolon antas vara en kommentarsrad, och ignoreras d�rmed. (Str�ngrader (se nedan) �r ett undantag. De kan b�rja med ett semikolon.)
En rad som b�rjar med ett "#" (med samma undantag som ovan) antas vara kommandorader. F�ljande kommandon kan anv�ndas:
#language <str�ng>
anger programmets f�rvalda spr�k; det spr�k som anv�nds i katalogbeskrivningen. F�rvalt �r ‘#language english’.
#version <num>
anger versionsnumret f�r katalogen som skall �ppnas. Observera att detta nummer m�ste st�mma exakt, och inte vara samma eller h�gre, som f�r Exec/OpenLibrary. Undantaget �r 0, vilket godtar vilken katalogversion som helst. F�rvalt �r ‘#version 0’.
Se Locale/OpenCatalog
f�r mer information om katalogspr�ket och
versionen.
#lengthbytes <num>
S�ger �t FlexCat att placera det givna antalet tecken f�re en str�ng, inneh�llande str�ngens l�ngd. L�ngden �r det antal tecken str�ngen tar upp, f�rutom l�ngdtecknena och ett avslutande nolltecken. (Katalogfiler, och d�rmed katalogstr�ngar kommer att ha ett avslutande nolltecken. Detta �r inte alltid sant f�r de inbyggda str�ngarna, beroende p� hur k�llkodsbeskrivningen ser ut.) ‘<num>’ m�ste vara mellan 0 och sizeof( long ) = 4. F�rvalt �r ‘#lengthbytes 0’.
#basename <str�ng>
Anger basnamnet f�r programmet. See section k�llkodsbeskrivning. Denna str�ng anv�nds ist�llet f�r basnamnet fr�n kommandoradsargumentet CDFILE. See section programstart.
Kommandon �r l�gesk�nsliga.
deklarerar en str�ng. De ser ut som ‘IDSTR (id/minlen/maxlen)’, d�r ‘IDSTR’ �r en identifierare (en str�ng best�ende av tecknena a-z, A-Z 0-9, samt ‘_’); ‘id’ �r ett unikt nummer (h�rmed kallat ID) och ‘minlen’, samt ‘maxlen’ �r str�ngens minimala respektive maximala l�ngd. De tre sista talen beh�ver inte anges (men tecknena ‘(//)’ m�ste anges!), i vilket fall FlexCat v�ljer ett nummer, och s�tter inte n�gra begr�nsningar p� str�ngens l�ngd. Det �r b�st att inte ange n�gra ID-nummer om du inte absolut beh�ver det. Dessa rader f�ljs av
som inneh�ller str�ngen, och inget annat. Dessa str�ngaar kan inneh�lla vissa kontrolltecken, som b�rjar med ett bakstreck:
Backsteg (ASCII 8)
Kontrollsekvensstart (ASCII 155)
Escape (ASCII 27)
Sidmatning (ASCII 12)
Bl�nk (ASCII 7)
Radmatning (ASCII 10)
Radretur (ASCII 13)
Tab (ASCII 9)
Vertikal tab (ASCII 11)
Avslutande parantes, som kan beh�vas som en del av sekvensen ‘(..)’, se k�llkodsbeskrivning.
Bakstreck
Tecknet som anges av ASCII-koden ‘HH’, d�r ‘HH’ �r hexadecimala siffror.
Tecknet som anges av ASCII-koden ‘OOO’, d�r ‘OOO’ �r oktala siffror.
Slutligen, ett ensamt bakstreck p� slutet av raden anger att str�ngen forts�tter p� n�sta rad. Detta g�r det m�jligt att ange str�ngar av godtycklig l�ngd; FlexCat g�r inte n�gra antanganden g�llande str�ngens l�ngd.
En str�ng anges allts� av en beskrivningsrad, samt den f�ljande str�ngraden. Ett exempel:
msgHello (/4/) Hello, this is english!\n
ID-numret saknas h�r, s� FlexCat v�ljer ett l�mpligt nummer. Numret 4 s�ger �t FlexCat att den f�ljande str�ngen inte f�r ha f�rre �n fyra tecken, och att den i �vrigt kan ha godtycklig l�ngd. Se filen ‘FlexCat.cd’ f�r ytterligare exempel.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Katalog�vers�ttningar p�minner mycket om katalogbeskrivningar, f�rutom att den inneh�ller andra kommandon, samt ingen information om str�ng-ID och l�ngd (dessa tas fr�n katalog�vers�ttningen). Alla str�ngar fr�n katalogbeskrivningen m�ste finnas med i �vers�ttningen (FlexCat undviker att skriva str�ngar som �r identiska med orginalet till katalogen), och inga fler identifierare f�r finnas med. Man kan enkelt f�rs�kra sig om detta genom att anv�nda FlexCat f�r att skapa nya katalog�vers�ttningar. See section �versikt.
De kommandon som till�ts i en katalog�vers�ttning �r:
##version <str�ng>
Anger katalogens version i form av en versionsstr�ng i AmigaDOS-format. Exempel:
‘##version $VER: FlexCat.catalog 8.2 (25.8.97)’
Versionen p� denna katalog �r 8. S�lunda m�ste katalogbeskrivningens versionsnummer vara 0 eller 8.
Du kan ers�tta datumet (h�r ‘27.09.93’) med det speciella nyckelordet ‘$TODAY’. N�r katalogen skapas, kommer ‘$TODAY’ att ers�ttas med det aktuella datumet (observera att bara den f�rsta f�rekomsten av ‘$TODAY’ i ‘$VER’-str�ngen kommer att behandlas). Om du vill att dina kataloger alltid skall vara aktuella, ange allts�:
‘$VER: FlexCat.catalog 3.1 ($TODAY)’
##rcsid $Date: <datum> <tid> $ $Revision: <rev> $
$Id: <namn> <datum> <tid> carlos Exp carlos $
kan anv�ndas tillsammans med ett revisionskontrollsystem ist�llet f�r ##version (allt skall givetvis vara p� en och samma rad). ‘<datum>’ �r datumet p� formen ‘��/mm/dd’, ‘<tid>’ �r tiden (ignoreras), ‘<rev>’ �r revisionen och ‘<namn>’ �r namnet som anv�nds i versionstr�ngen.
##name <namn>
finns med f�r kompatibilitet med CatComp. Det ers�tter
‘<namn>’-argumentet i ##rcsid
-kommandot.
##language <str�ng>
Katalogens spr�k. Naturligtvis skall detta vara ett annat spr�k �n det som anv�nds i katalogbeskrivningen. Kommandona ‘##language’ och ‘##version’ m�ste finnas med i en katalog�vers�ttning.
##codeset <nummer>
Anv�nds f�r tillf�llet inte, och m�ste vara 0. Detta �r det f�rvalda v�rdet.
## chunk <ID> <str�ng>
L�gger till IFF-blocket ‘<ID>’ till katalogen, inneh�llande den angivna <str�ng>. Anv�nds oftast f�r att l�gga till en kommentar till en katalog. Exempel:
## chunk AUTH Tysk �vers�ttning av Jochen Wiedmann
Enligt ovanst�ende ser allts� v�rt exempel ut s� h�r i katalog�vers�ttningen:
msgHello Hallo, dies ist deutsch!\n
Se ‘Deutsch.ct’ f�r ytterligare ett exempel p� en katalog�vers�ttning.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Detta �r den speciella delen av FlexCat. Hittils har det inte varit n�got som inte CatComp, KitCat och andra program ocks� kan g�ra. Den skapade k�llkoden g�r det enkelt att anv�nda kataloger, utan att f�r den skull f�rlora flexibilitet. Vilket programspr�k som helst b�r vara m�jligt att anv�nda, och alla behov borde kunna uppfyllas. Det l�ter kanske som en mots�gelse, men FlexCats l�sning p� detta problem �r k�llkodsbeskrivningarna, som inneh�ller en mall f�r hur k�llkoden skall skall se ut. Dessa kan redigeras p� samma s�tt som katalogbeskrivningar och katalog�vers�ttningar. Allts� kan FlexCat generera i princip godtycklig kod.
K�llkodsbeskrivningarna genoms�ks efter vissa speciella symboler, som ers�tts med vissa v�rden. M�jliga symboler �r bakstreckstecknena enligt ovan, och ytterligare sekvenser som b�rjar med ett ‘%’-tecken (detta �r v�lbekant f�r C-programmerare).
�r basnamnet p� katalogbeskrivningen. See section programstart.
�r versionsnumret p� katalogbeskrivningen. Blanda inte ihop detta med katalogversionen fr�n katalog�vers�ttningen.
�r katalogbeskrivningens spr�k. Observera att detta matas in som en str�ng. Se ‘%s’ nedan.
�r antalet str�ngar i katalogbeskrivningen.
�r tecknet ‘%’.
De viktigaste �r f�ljande sekvenser. De representerar katalogstr�ngarna p� olika s�tt. Rader inneh�llande en eller flera av f�ljande symboler upprepas en g�ng f�r varje str�ng.
�r identifieraren fr�n katalogbeskrivningen.
�r ID-numret f�r str�ngen i decimal, hexadecimal respektive oktal notation. Numret ‘n’ s�ger �t FlexCat hur m�nga tecken ID-numret skall anv�nda (str�ngen fylls med noll till v�nster till den �nskade l�ngden). Om du inte anger ‘n’ kommer ID-numret bara att anv�nda det antal tecken som beh�vs.
�r numret p� den aktuella str�ngen. R�knaren b�rjar fr�n 0.
�r str�ngen sj�lv. Hur denna skall matas in beror p� programspr�ket som anv�nds, och kan kontrolleras med kommandona ‘##stringtype’ och ‘##shortstrings’.
�r str�ngens ID. Skillnaden mellan ‘%na’ och t.ex. ‘%nx’ �r att ‘%na’ genererar str�ngens ID separerad till enstaka tecken:
‘%2a’ i k�llkodsbeskrivningen resulterar i ‘\x00\x20’
Om du inte anger ‘n’, kommer ID-numret att bli fyra tecken.
�r str�ngens l�ngd. Observera att det v�rdet alltid �r j�mnt.
b�r anv�ndas tillsammans med ‘%nt’. Eftersom ‘%nt’ alltid resulterar i ett j�mnt v�rde, kan en beskrivningsrad som:
static const char Block[] = { "%2a" "%2t" %s "%z" };
orsaka problem, speciellt n�r man tolkar en s�dan tabell, eftersom ‘%2t’ kan vara j�mn, medans str�ngens l�ngd �r udda! N�r tabellen tolkas kan du l�sa eller hoppa �ver ett tecken f�r mycket (jag antar konsekvenserna �r k�nda). F�r att undvika detta introduerades ‘%z’. FlexCat ers�tter den med s� m�nga tecken (‘\x00’) som str�ngen saknar f�r att l�ngden skall bli j�mn. Om str�ngen �r tre tecken l�ng, ger ‘%nt’ ‘4’, och ‘%z’ l�gger till en ‘\x00’.
matar in texten mellan paranteserna f�r varje str�ng utom den sista. Detta kan beh�vas i vektorer, om posterna i vektorn skall separeras med komma, men den sista posten inte f�r f�ljas av ett komma. Du kan anv�nda ‘(,)’ i s� fall. Observera att inom paranteser ers�tts inte n�gra ‘%’-sekvenser. Bakstrecksekvenser ers�tts dock fortfarande.
Kontrollsekvenserna ‘%l’ och ‘%s’ skapar str�ngar. Hur str�ngarna ser ut beror p� programspr�ket i fr�ga. D�rf�r kan man ha kommandorader i k�llkodsbeskrivningen liknande dem i t.ex. katalog�vers�ttningen. Dessa kommandon m�ste b�rja p� f�rsta positionen p� en rad, och det kan bara finnas ett kommando per rad. M�jliga kommandon �r:
##shortstrings
g�r s� att l�nga str�ngar delas upp p� flera raader. Detta �r inte alltid m�jligt, eller kanske inte implementerad FlexCat. S�lunda �r det normala att skapa en str�ng, som kanske �r mycket l�ng.
##stringtype <typ>
Talar om f�r FlexCat hur str�ngarna skall se ut. M�jliga typer �r:
Inga extra tecken; en ren kopia av str�ngen infogas, och inget annat. Bin�ra tecken (bakstegsekvenser) �r inte m�jliga.
skapar str�ngar i C-format. Str�ngarna f�reg�s och f�ljs av tecknet ‘"’. Str�ngar delas med ‘"\’ p� slutet av raden, och ‘"’ p� b�rjan av n�sta rad. (Baksteget beh�vs i makron.) Bin�ra tecken infogas som ‘\OOO’. See section C.
ser ut som str�ngtypen C, utom det avslutande baksteget p� slutet av rader. See section Oberon. Denna str�ngtyp rekommenderas �ven f�r Modula-2.
Str�ngas skapas med ‘dc.b’. L�sbara ASCII-tecken f�reg�s och f�ljs av tecknet ‘'’; bin�ra tecken infogas som ‘$XX’. See section assembler.
Str�ngar f�reg�s och f�ljs av tecknet ‘'’. Ett ‘+’-tecken binder samman str�ngar som har delats upp p� flera rader. Bin�ra tecken infogas som i C.
L�t oss se p� ett utdrag fr�n filen ‘C_h.sd’, som skapar en inkluderingsfil f�r programspr�ket C:
##stringtype C ##shortstrings /* Se till att vi bara inkluderas en g�ng. */ #ifndef %b_CAT_H #define %b_CAT_H /* L�s andra inkluderingsfiler. */ #include <exec/types.h> #include <libraries/locale.h> /* Funktionsprototyper */ extern void Open%bCatalog( struct Locale *, STRPTR ); extern void Close%bCatalog( void ); extern STRPTR Get%bString( LONG ); /* Definitioner f�r identifierarna samt deras ID-nummer. */ /* Den h�r raden kommer att upprepas f�r varje str�ng. */ #define %i %d #endif
F�r den s�kv�g som anv�nds f�r k�llkodsbeskrivningar, se programstart.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Hur du anv�nder k�llkoden beror naturligtvis p� vilken k�llkod som skapas, och d�rmed p� k�llkodsbeskrivningen som anv�nds. Vad vi talar om h�r �r de k�llkodsbeskrivningar som f�ljer med FlexCat. See section k�llkodbeskrivning.
Alla k�llkodsbeskrivningar borde g�ra det m�jligt att anv�nda programmen
utan locale.library
. En global variabel kallad ‘LocaleBase’
(‘_LocaleBase’ f�r assembler) m�ste dock finnas, och initieras med
NULL eller med ett anrop till Exec/OpenLibrary. Lokalisering �r inte
m�jlig om LocaleBase
�r NULL, s�vida inte k�llkodsbeskrivningen
‘C_c_V20.sd’ anv�nds. Denna beskrivning m�jligg�r lokalisering under
AmigaOS 2.0 genom att ers�tta locale.library
med
iffparse.library
(plus lite egen kod). (En variabel kallad
IFFParseBase
m�ste finnas f�r att detta skall fungera, och den
beh�ver initieras p� liknande s�tt som ‘LocaleBase’.) See section C.
Programmeraren beh�ver inte veta hur dessa bibliotek anv�nds, utom n�r han
skapar egna k�llkodsbeskrivningar.
Det finns tre funktioner, och de �r ganska enkla att anv�nda.
Denna funktion �ppnar eventuellt en katalog. Argumentet locale
�r en
pekare till en Locale-struktur, och language
�r en str�ng som
inneh�ller namnet p� det spr�k f�r vilket en katalog skall �ppnas. I de
flesta fall �r dessa b�da ‘NULL’ eller ‘NIL’, eftersom
anv�ndarens val inte anv�nds annars. Se Locle/OpenCatalog f�r mer
information.
Icke objektorienderade spr�k (C, assembler, Modula) anropar normalt sett
funktionen OpenXXXCatalog
, d�r XXX �r basnamnet p� applikationen:
Detta l�ter dig anv�nda flera olika kataloger i ett och samma program.
Om anv�ndaren har ‘Deutsch’ och ‘Fran�ais’ som de f�rvalda spr�ken, och programmets basnamn �r ‘XXX’, s� letar programmet efter f�ljande filer:
‘ProgDir:Catalogs/Deutsch/XXX.catalog’ ‘Locale:Catalogs/Deutsch/XXX.catalog’ ‘ProgDir:Catalogs/Fran�ais/XXX.catalog’ ‘Locale:Catalogs/Fran�ais/XXX.catalog’
d�r ‘ProgDir:’ �r den l�da d�r programmet finns. (Ordningen mellan ‘ProgDir:’ och ‘Locale:’ kan �ndras f�r att undvika en dialogruta i stil med ‘Mata in disketten YYY’.)
OpenCatalog �r av typen void (en procedur f�r Pascal-programmerare), och returnerar d�rmed inte n�got v�rde.
Returnerar en pekare till den str�ng som motsvaras av det givna ID:n i
katalogbeskrivningen. Dessa str�ngar �gs av locale.library
, och f�r
inte modifieras.
Ett exempel kan vara anv�ndbart. Ta str�ngen fr�n exemplet med
katalogbeskrivningen, som kallades msgHello
. K�llkodsbeskrivningen
deklarerar konstanten ‘msgHello’, som representerar str�ngen. Denna
str�ng kan skrivas ut i C med:
printf( "%s\n", GetString( msgHello ) );
Den h�r funktionen friar katalogen (allts� det allokerade minnet) innan programmet avslutas. Du kan anropa den h�r funktionen n�r som helst, �ven f�re OpenCatalog anropas.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
C-k�llkoden best�r av tv� delar: En ‘.c’-fil som skall kompileras och anv�ndas som den �r, samt en inkluderingsfil som ska inkluderas i alla k�llkodsfiler som anv�nder katalogstr�ngar. Denna inkluderingsfil definierar alla str�ngars ID:n som makron.
De C-kompilatorer jag kan (SAS/C, DICE och GCC) kan automatiskt �ppna
bibliotek och initiera katalogerna. Du beh�ver allts� inte anropa
funktionerna OpenCatalog
och CloseCatalog
; kompilatorn g�r
det �t dig. Dessutom anropar OpenCatalog
GetString
-funktionen
f�r alla katalogstr�ngar. Detta g�r att du helt enkelt kan skriva
‘msgHello’ ist�llet f�r ‘GetString( msgHello )’.
Om du definierar symbolen LOCALIZE_V20
(‘-D LOCALIZE_V20’ f�r
DICE och GCC; ‘DEF LOCALIZE_V20’ f�r SAS/C), kommer du att f� ett
program som kan anv�nda kataloger under OS 2.0: locale.library
ers�tts med iffparse.library
i s� fall. Ditt program beh�ver d� �ven
ett argument som ‘LANGUAGE’, s� att anv�ndaren kan ange vilket spr�k
som skall anv�ndas. Funktionen InitXXXCatalog
(d�r ‘XXX’ �r
basnamnet p� ditt program) beh�ver anropas, med argumentet fr�n
‘LANGUAGE’ som parameter. Denna parameter ignoreras naturligtvis om du
har locale.library
. (Det vore m�jligt att g�ra liknande saker under
OS 1.3, men jag vill inte st�dja denna f�r�ldrade version l�ngre.)
Du f�rlorar lite funktionalitet med denna k�llkodsbeskrivning: Till exempel
kan du inte skicka med en Locale
-struktur till OpenCatalog
.
De allra flesta programmen kommer dock inte att sakna n�got; andra beh�ver
modifiera k�llkodsbeskrivningen.
F�r ett exempel p� ett program som anv�nder dessa k�llkodsbeskrivningen, se �versikten.
‘OBS:’
I och med version 1.9 inneh�ller arkivet k�llkodsbeskrivningen ‘CatComp_h.sd’, som kan anv�ndas av program som anv�nder mer �n en katalog. Se den filen f�r hur du kan uppdatera de andra k�llkodsbeskrivningarna.
Det finns ocks� en ny k�llkodsbeskrivning av Magnus Holmgren <cmh@lls.se>. Filerna ‘Cat2h_c.sd’ och ‘Cat2h_h.sd’ inneh�ller k�llkodsbeskrivningar som genererar kod liknande den som genereras av Cat2h av Nico Fran�ois (och �ven av Cat2Inc av Magnus Holmgren ;). Den anv�nder ett lite annorlunda s�tt f�r att hantera str�ngar, som �r kompakt och snabbt.
Ist�llet f�r att lagra alla str�ngar i en vektor, och s�ka igenom denna
varje g�ng (som CatComp normalt sett g�r; man kan undvika detta dock),
lagras str�ngens ID i de tv� f�rsta tecknena av str�ngen.
GetString()
-funktionen, som d� allts� tar en str�ng som argument,
l�ser de tv� f�rsta tecknena till ett l�ngord, och d�rmed �r str�ngens ID
och den inbyggda str�ngen k�nda.
I och med version 1.9 kan FlexCat generera den h�r sortens kod, via
kommandot %a
. De inkluderade filerna anv�nder %2a
, och
anv�nder allts� bara tv� byte f�r ID-nummer per string (som Cat2h g�r).
Detta torde r�cka f�r de flesta program. Om du �ndrar l�ngden, kom ih�g att
GetString()
-funktionen ocks� beh�ver �ndras.
Den genererade inkluderingsfilen definierar alla str�ngar, och
k�llkodsfilen inneh�ller kod f�r att �ppna och st�nga katalogen (med
automatisk initiering f�r SAS/C och DICE), och en l�mplig
GetString()
-funktion. En snabb titt p� den genererade koden borde
vara nog f�r att se alla detaljer, tycker jag.
Koden st�djer f�r tillf�llet inte flera kataloger, ej eller �ndring av versionsnummer eller inbyggt spr�k. Enkelt att l�gga till dock, om behovet skulle uppst�.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Att anv�nda FlexCat-k�llkod i C++-program �r mycket enkelt: N�stan allt g�rs av en speciell klass, som implementeras i filerna ‘C++_CatalogF.cc’ och ‘C++_CatalogF.h’. All du beh�ver g�ra �r att d�pa om dessa filer till ‘CatalogF.cc’ och ‘CatalogF.h’, kompilera dem, och skapa ytterligare tv� filer genom att anv�nda k�llkodsbeskrivningarna ‘C++_cc.sd’ och ‘C++_h.sd’. Den f�rsta skapar filen med str�ngarna (som naturligtvis ocks� m�ste kompileras), och den andra filen kommer att inkluderas i ditt program. Ett C++-program som anv�nder FlexCat-k�llkod kan se ut s� h�r:
#include <iostream.h> extern "C" { #include <clib/exec_protos.h> } #include "CatalogF.h" #include "HelloLocalWorld_Cat.h" struct LocaleBase *LocaleBase = 0; int main() { // Du m�ste �ppna bibliteket h�r, �ven om din kompilator // st�djer automatisk �ppning: Det kommer vanligtvis att // avsluta programmet om locale.library inte kunde �ppnas. // Det �r inte vad vi vill h�r, eftersom vi d� kommer att // anv�nda de inbyggda str�ngarna ist�llet. LocaleBase = ( struct LocaleBase * ) OpenLibrary( "locale.library", 38 ); const CatalogF cat( 0, 0, HelloLocalWorld_ARGS ); cout >> cat.GetString( msgHelloLocalWorld ); if (LocaleBase) CloseLibrary(LocaleBase); }
En modifiering av GCCs ‘libauto.a’ finns tillg�nglig, som l�ter dig ta
bort raderna som g�ller variabeln LocaleBase
.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Det finns n�gra olika k�llkodsbeskrivningar: ‘AmigaOberon.sd’ �r gjord
f�r den aktuella versionen av kompilatorn AmigaOberon
.
‘Oberon_V39.sd’ �r f�r �ldre versioner, och ‘Oberon_V38.sd’
anv�nder filen ‘Locale.mod’ fr�n Hartmut Goebel. ‘Oberon-A.sd’
�r, naturligtvis, f�r Oberon-A
.
Funktionsprototyperna �r:
XXX.OpenCatalog(loc: Locale.LocalePtr; language : ARRAY OF CHAR); XXX.GetString(num: LONGINT): Exec.StrPtr; XXX.CloseCatalog();
d�r ‘XXX’ �r basnamnet fr�n k�llkodsbeskrivningen. See section k�llkodsbeskrivning.
Till slut ett exempel p� hur man anv�nder FlexCat-k�llkoden:
MODULE HelloLocalWorld; IMPORT x:=HelloLocalWorld_Cat; Dos; BEGIN x.OpenCatalog(NIL, ""); Dos.PrintF("%s\n", x.GetString(x.msgHello)); (* Katalogen kommer automatiskt att st�ngas *) (* n�r programmet avslutas. *) END Anything;
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Modula-2 har ett modulkoncept liknande det i Oberon. Detta betyder att funktionsnamnen �r alltid samma. Till skillnad fr�n Oberon beh�ver dock Modula-2 en implementations- och en deklarationsmodul. D�rf�r beh�ver du skapa tv� filer, genom att anv�nda k�llkodsbeskrivningarna ‘Modula2Def.sd’ och ‘Modula2Mod.sd’. Dessa �r anpassade f�r kompilatorn M2Amiga. Observera att du �ven beh�ver filen ‘OptLocalL.def’ fr�n version 4.3 av M2Amiga.
Funktionsprototyperna �r:
PROCEDURE XXX.OpenCatalog(loc : ld.LocalePtr; language : ARRAY OF CHAR); PROCEDURE XXX.CloseCatalog(); PROCEDURE XXX.GetString(num : LONGINT) : ld.StrPtr;
d�r ‘XXX’ �r basnamnet fr�n k�llkodsbeskrivningen. See section k�llkodsbeskrivning.
Till slut ett exempel p� hur man anv�nder FlexCat-k�llkoden:
MODULE HelloLocalWorld; IMPORT hl: HelloLocalWorldLocale, io: InOut; BEGIN hl.OpenCatalog(NIL, ""); io.WriteString(hl.GetString(hl.msgHello)); io.WriteLn; hl.CloseCatalog; END HelloLocalWorld.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Assemblerk�llkoden har gjorts f�r att anv�ndas med Aztec-assemblern. Denna b�r dock inte skilja sig s� mycket fr�n andra assemblatorer, och du b�r kunna g�ra egna k�llkodsbeskrivningar. K�llkoden best�r av tv� delar: En ‘.asm’-fil, som assembleras och l�nkas, samt en ‘.i’-fil, som definierar str�ngarnas ID, och m�ste inkluderas av de moduler som anv�nder dem.
Funktionsnamnen har �ndrats lite f�r att till�ta anv�ndandet av olika kataloger i en fil: Dessa �r ‘OpenXXXCatalog’, ‘CloseXXXCatalog’ och ‘GetXXXString’, d�r ‘XXX’ �r basnamnet fr�n k�llkodsbeskrivningen. Konceptet har kopierats fr�n GadToolsBox, och har visat sig fungera bra. See section k�llkodsbeskrivning.
Som vanligt returneras funktionsresultatet i d0, och funktionerna �ndrar inte p� registrena d2-d7 och a2-a7. OpenCatalog f�rv�ntar sig sina argument i a0 (en pekare till Locale-strukturen) och a1 (en pekare till spr�kstr�ngen), vilka f�r det mesta �r NULL. GetString f�rv�ntar sig en pekare i a0. Du beh�ver inte bry dig om vad den pekar p�.
Till slut ett exempel p� hur man anv�nder FlexCat-k�llkoden:
* HelloLocalWorld.asm include "XXX.i" ; Du m�ste inkludera denna. Den inneh�ller ; "xref OpenHelloLocalWorldCatalog", ... xref _LVOOpenLibrary xref _LVOCloseLibrary xref _AbsExecBase dseg LocNam: dc.b "locale.library",0 dc.l _LocaleBase,4 ; M�ste finnas med detta namn. cseg main: move.l #38,d0 ; �ppna locale.library lea LocName,a1 move.l _AbsExecBase.a6 jsr _LVOOpenLibrary(a6) * Avsluta INTE, om OpenLibrary misslyckas sub.l a0,a0 ; �ppna katalogen sub.l a1,a1 jsr OpenHelloLocalWorldCatalog lea.l msgHello,a0 ; H�mta en pekare till str�ngen jsr GetHelloLocalWorldString jsr PrintD0 ; och skriv ut str�ngen Ende: jsr CloseHelloLocalWorldCatalog ; St�ng katalogen move.l _LocaleBase,a1 ; St�ng locale.library move.l a1,d0 ; Denna test m�ste g�ras under 1.3 beq Ende1 jsr CloseLibrary Ende1: rts end
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I och med version 3.0 kan ett E-program delas upp i moduler. Den f�ljande beskrivningen beskriver hur ‘E30b.sd’ anv�nds, som fungerar med E version 3.0b eller h�gre. (Version 3.0a hade allvarliga fel; f�r tidigare versioner kan man anv�nda ‘E21b.sd’, vilket kr�ver att man manuellt infogar den genererade koden i den egna koden.)
‘E30b.sd’ skapar en modul som heter ‘Locale’, som inneh�ller en
variabel, cat
, av typen ‘catalog_XXX’, d�r ‘XXX’ �r
basnamnet fr�n k�llkodsbeskrivningen. See section k�llkodsbeskrivning.
Filen ‘HelloLocalWorld.e’ kan se ut n�got s�dant h�r:
MODULE '*Locale' -> Anv�nd den h�r modulen. DEF cat : PTR TO catalog_HelloLocalWorld -> Den h�r variablen inneh�ller alla str�ngarna i -> katalogen, samt n�gra metoder. Du m�ste deklarera -> den i alla moduler som anv�nder lokalisering, men -> initiera den bara i huvudmodulen. PROC main() localebase := OpenLibrary('locale.library', 0) -> �ppna locale.library; avsluta inte om den -> inte kunde �ppnas: Vi kommer att anv�nda de -> inbyggda str�ngarna i s� fall. NEW cat.create() cat.open() -> Som redan har n�mnts, detta skall bara g�ras i -> huvudmodulen. WriteF('\s\n', cat.msg_Hello_world.getstr()) -> cat.msg_Hello_world �r en av de str�ngar som -> finns i cat. Den h�r str�ngen deklarerar en -> metod, getstr(), som l�ser katalogen och -> returnerar en pekare till den lokaliserade -> str�ngen. cat.close() IF localebase THEN CloseLibrary(localebase) ENDPROC
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
De flesta k�llkodsbeskrivningar som �r tillg�ngliga f�r tillf�llet kan inte anv�ndas i program som �ppnar mer �n en katalog. I senare distributioner kommer detta s�kerligen att �ndras, och uppdaterade k�llkodsbeskrivningar kommer att vara en del av de distributionerna.
F�r tillf�llet f�ljer det med ett exempel av en s�dan k�llkodsbeskrivning. Se ‘CatComp_h.sd’ f�r att se hur beskrivningen kan justeras f�r att undvika att f� flera symboler med samma namn och liknande. Med n�gra f� ord: Anv�nd ‘%b’ som prefix, suffix eller infix i varje namn som �r en viktig del av k�llkoden (och som dessutom �r globalt synliga). Om din tabell med str�ngar heter ‘String’, ers�tt den med ‘%b_Strings’, och du kommer inte l�ngre att f� flera symboler med samma namn.
‘CatComp_h.sd’ producerar k�llkod som liknar den som CatComp genererar, och kan anv�ndas av de som vill anv�nda FlexCat, men inte vill n�mnv�rt �ndra sina program.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
�ven om FlexCat verkar vara s� gott som klart, har jag n�gra poster kvar p� min "att g�ra" lista. Och jag �r naturligtvis �ppen f�r f�rslag, tips eller kritik. Speciellt kan jag l�gga till nya str�ngtyper, eftersom detta kan g�ras med mycket sm� �ndringar.
Jag vore mycket tacksam om n�gon skickade mig nya k�llkodsbeskrivningar och om jag kunde inkludera dem i framtida distributioner. Vilket programspr�k som helst, och vilka ut�kningar som helst, under f�ruts�ttning att de har visat sig fungera bra genom tester i riktiga program. Se support f�r kontaktadresser.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
F�r programuppdateringar, bes�k hemsidan f�r FlexCat vid:
http://amiga.com.pl/flexcat/
Om du har n�gra f�rslag eller felrapporter, skicka e-post till:
carlos@amiga.com.pl
eller via vanlig post:
Marcin Orlowski ul. Radomska 38 71-002 Szczecin Poland
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
‘Jochen Wiedmanns tack g�r till:’
f�r KitCat, f�reg�ngaren till FlexCat, som har gjort v�rdefulla saker f�r mig, men till slut inte var flexibel nog, samt f�r k�llkodsbeskrivningen f�r Oberon.
f�r Amiga-versionen av TexInfo, som anv�ndes f�r den h�r dokumentationen.
f�r den ursprungliga versionen av TexInfo, och m�nga andra utm�rkta program.
f�r DICE och speciellt DME.
f�r den italienska �vers�ttningen.
f�r k�llkodsbeskrivningen f�r E samt dess dokumentation, den franska �vers�ttningen, samt f�r felrapporter.
f�r k�llkodsbeskrivningen f�r C++, den spanska �vers�ttningen av b�de program och manual, och f�r det mycket bra f�rslaget f�r att snabba upp GetString-funktionen.
f�r k�llkodsbeskrivningen f�r Modula-2.
f�r att ha f�reslagit FLEXCAT_SDDIR-variabeln.
f�r den finska �vers�ttningen.
f�r den polska �vers�ttningen, och f�r underh�llet av det polska locale-paketet.
f�r att ha f�reslagit WARNCTGAPS-flaggan och ##chunk-kommandot.
f�r die d�nische Quelltextbeschreibung
f�r att ha svarat p� m�nga dumma fr�gor, och f�r mycket roligt. Till exempel stefanb (Stefan Becker), PowerStat (Kai Hoffmann), ill (Markus Illenseer), Quarvon (J�rgen Lang), ZZA (Bernhard M�llemann), Tron (Mathias Scheler), mungo (Ignatios Souvlatzis), jow (J�rgen Weinelt) och Stargazer (Petra Zeidler).
f�r Amiga och Kickstart 2.0. Forts�tt utveckla Amigan, och jag kommer att vara en Amiga-anv�ndare f�r de n�sta �tta �ren ocks�. ;-)
‘Marcins tack g�r till:’
f�r att ha skapat FlexCat.
f�r k�llkodsbeskrivningen Cat2h.
f�r att ha skapat nya �vers�ttningar, och uppdaterat existerande �vers�ttningar:
av Ljubomir Jankovic <lurch@afrodita.rcub.bg.ac.yu>.
av Vit Sindlar <xsindl00@stud.fee.vutbr.cz>.
av Magnus Holmgren <cmh@lls.se> och Hjalmar Wikholm <hjalle@canit.se>.
uppdaterad av Mika Lundell <c71829@uwasa.fi>.
omarbetad av Luca Nora <ln546991@silab.dsi.unimi.it> och Giovanni Addabbo <gaddabbo@imar.net>.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Utvecklingshistorien f�r FlexCat finns i filen ‘FlexCat.history’, som �r en del av distributionsarkivet.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | .
�
�
A B C D E F H I K M N O Q S T W |
---|
Jump to: | .
�
�
A B C D E F H I K M N O Q S T W |
---|
[Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 14, 2022 using texi2html 5.0.
The buttons in the navigation panels have the following meaning:
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
[ < ] | Back | Previous section in reading order | 1.2.2 |
[ Up ] | Up | Up section | 1.2 |
[ > ] | Forward | Next section in reading order | 1.2.4 |
[ >> ] | FastForward | Next chapter | 2 |
[Top] | Top | Cover (top) of document | |
[Contents] | Contents | Table of contents | |
[Index] | Index | Index | |
[ ? ] | About | About (help) |
where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
This document was generated on April 14, 2022 using texi2html 5.0.